package interfazgrafica.modificar.vacas;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

/**
 *
 * @author Lauaa
 */
@Entity
@Table(name = "VACAS", catalog = "", schema = "SYSTEM")
@NamedQueries({
    @NamedQuery(name = "Vacas.findAll", query = "SELECT v FROM Vacas v"),
    @NamedQuery(name = "Vacas.findByPadre", query = "SELECT v FROM Vacas v WHERE v.padre = :padre"),
    @NamedQuery(name = "Vacas.findByMadre", query = "SELECT v FROM Vacas v WHERE v.madre = :madre"),
    @NamedQuery(name = "Vacas.findByPpadre", query = "SELECT v FROM Vacas v WHERE v.ppadre = :ppadre"),
    @NamedQuery(name = "Vacas.findByPmadre", query = "SELECT v FROM Vacas v WHERE v.pmadre = :pmadre"),
    @NamedQuery(name = "Vacas.findByMpadre", query = "SELECT v FROM Vacas v WHERE v.mpadre = :mpadre"),
    @NamedQuery(name = "Vacas.findByMmadre", query = "SELECT v FROM Vacas v WHERE v.mmadre = :mmadre"),
    @NamedQuery(name = "Vacas.findByNumeroenexplotacion", query = "SELECT v FROM Vacas v WHERE v.numeroenexplotacion = :numeroenexplotacion"),
    @NamedQuery(name = "Vacas.findByFechanacimiento", query = "SELECT v FROM Vacas v WHERE v.fechanacimiento = :fechanacimiento"),
    @NamedQuery(name = "Vacas.findByCalificacion", query = "SELECT v FROM Vacas v WHERE v.calificacion = :calificacion"),
    @NamedQuery(name = "Vacas.findByRecalificacion", query = "SELECT v FROM Vacas v WHERE v.recalificacion = :recalificacion"),
    @NamedQuery(name = "Vacas.findByNumeroid", query = "SELECT v FROM Vacas v WHERE v.numeroid = :numeroid")})
public class Vacas implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    @Basic(optional = false)
    //private static final long serialVersionUID = 1L;
    @Column(name = "PADRE")
    private String padre;
    @Column(name = "MADRE")
    private String madre;
    @Column(name = "PPADRE")
    private String ppadre;
    @Column(name = "PMADRE")
    private String pmadre;
    @Column(name = "MPADRE")
    private String mpadre;
    @Column(name = "MMADRE")
    private String mmadre;
    @Basic(optional = false)
    @Column(name = "NUMEROENEXPLOTACION")
    private BigInteger numeroenexplotacion;
    @Basic(optional = false)
    @Column(name = "FECHANACIMIENTO")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechanacimiento;
    @Column(name = "CALIFICACION")
    private String calificacion;
    @Column(name = "RECALIFICACION")
    private String recalificacion;
    @Id
    @Basic(optional = false)
    @Column(name = "NUMEROID")
    private String numeroid;

    public Vacas() {
    }

    public Vacas(String numeroid) {
        this.numeroid = numeroid;
    }

    public Vacas(String numeroid, BigInteger numeroenexplotacion, Date fechanacimiento) {
        this.numeroid = numeroid;
        this.numeroenexplotacion = numeroenexplotacion;
        this.fechanacimiento = fechanacimiento;
    }

    public String getPadre() {
        return padre;
    }

    public void setPadre(String padre) {
        String oldPadre = this.padre;
        this.padre = padre;
        changeSupport.firePropertyChange("padre", oldPadre, padre);
    }

    public String getMadre() {
        return madre;
    }

    public void setMadre(String madre) {
        String oldMadre = this.madre;
        this.madre = madre;
        changeSupport.firePropertyChange("madre", oldMadre, madre);
    }

    public String getPpadre() {
        return ppadre;
    }

    public void setPpadre(String ppadre) {
        String oldPpadre = this.ppadre;
        this.ppadre = ppadre;
        changeSupport.firePropertyChange("ppadre", oldPpadre, ppadre);
    }

    public String getPmadre() {
        return pmadre;
    }

    public void setPmadre(String pmadre) {
        String oldPmadre = this.pmadre;
        this.pmadre = pmadre;
        changeSupport.firePropertyChange("pmadre", oldPmadre, pmadre);
    }

    public String getMpadre() {
        return mpadre;
    }

    public void setMpadre(String mpadre) {
        String oldMpadre = this.mpadre;
        this.mpadre = mpadre;
        changeSupport.firePropertyChange("mpadre", oldMpadre, mpadre);
    }

    public String getMmadre() {
        return mmadre;
    }

    public void setMmadre(String mmadre) {
        String oldMmadre = this.mmadre;
        this.mmadre = mmadre;
        changeSupport.firePropertyChange("mmadre", oldMmadre, mmadre);
    }

    public BigInteger getNumeroenexplotacion() {
        return numeroenexplotacion;
    }

    public void setNumeroenexplotacion(BigInteger numeroenexplotacion) {
        BigInteger oldNumeroenexplotacion = this.numeroenexplotacion;
        this.numeroenexplotacion = numeroenexplotacion;
        changeSupport.firePropertyChange("numeroenexplotacion", oldNumeroenexplotacion, numeroenexplotacion);
    }

    public Date getFechanacimiento() {
        return fechanacimiento;
    }

    public void setFechanacimiento(Date fechanacimiento) {
        Date oldFechanacimiento = this.fechanacimiento;
        this.fechanacimiento = fechanacimiento;
        changeSupport.firePropertyChange("fechanacimiento", oldFechanacimiento, fechanacimiento);
    }

    public String getCalificacion() {
        return calificacion;
    }

    public void setCalificacion(String calificacion) {
        String oldCalificacion = this.calificacion;
        this.calificacion = calificacion;
        changeSupport.firePropertyChange("calificacion", oldCalificacion, calificacion);
    }

    public String getRecalificacion() {
        return recalificacion;
    }

    public void setRecalificacion(String recalificacion) {
        String oldRecalificacion = this.recalificacion;
        this.recalificacion = recalificacion;
        changeSupport.firePropertyChange("recalificacion", oldRecalificacion, recalificacion);
    }

    public String getNumeroid() {
        return numeroid;
    }

    public void setNumeroid(String numeroid) {
        String oldNumeroid = this.numeroid;
        this.numeroid = numeroid;
        changeSupport.firePropertyChange("numeroid", oldNumeroid, numeroid);
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (numeroid != null ? numeroid.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Vacas)) {
            return false;
        }
        Vacas other = (Vacas) object;
        if ((this.numeroid == null && other.numeroid != null) || (this.numeroid != null && !this.numeroid.equals(other.numeroid))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "cowmanager.Vacas[numeroid=" + numeroid + "]";
    }
    public void addPropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.removePropertyChangeListener(listener);
    }

}
